Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add option to allow line breaks in values #486

Merged
merged 5 commits into from
Jan 18, 2022

Conversation

andreialecu
Copy link
Contributor

@andreialecu andreialecu commented Aug 6, 2020

Closes #458

This adds an option { multiline: "line-breaks" } that allows values to contain new lines. See https://github.com/bkeepers/dotenv#multi-line-values for an additional explanation.

The documentation was updated

Also, in the process I discovered that stubbing parse was not working properly in tests, so I changed the exports a bit to fix this and accommodate a new test for this option.

This adds an option `{ multiline: "line-breaks" }` that allow values to contain new lines.
Closes motdotla#458
}

try {
// specifying an encoding returns a string instead of a buffer
const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })
const parsed = DotEnvModule.parse(fs.readFileSync(dotenvPath, { encoding }), { debug, multiline })
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ivan-californias
Copy link

Any chance of this getting reviewed & merged in the near future?

This also would had solved #196, #391 and #28 which were closed without a real solution

@Asuza
Copy link

Asuza commented Feb 17, 2021

@motdotla what do you think of this change? It seems like a great addition to a very useful tool.

@andreialecu
Copy link
Contributor Author

andreialecu commented Feb 18, 2021

If anyone is interested in a different solution for this:

Even though I made this PR, I ended up just using base64 encoded variables.

If you use VSCode, an extension like https://marketplace.visualstudio.com/items?itemName=adamhartford.vscode-base64 makes it very easy to encode/decode (multiline) strings in your .env file.

You can then use a package like https://www.npmjs.com/package/env-var to manage how you consume the variables in your app:

Your .env file:

SOME_CERTIFICATE=somebase64encodedstring

Code:

import env from 'env-var';

require('dotenv').config();

const certificate = env
      .get("SOME_CERTIFICATE")
      .required()
      .convertFromBase64()
      .asString()

@sb-LukeM sb-LukeM mentioned this pull request Mar 25, 2021
@motdotla
Copy link
Owner

motdotla commented May 5, 2021

This is a great addition @andreialecu. Thank you. We might make some small modifications but otherwise, this will be something we release relatively soon.

@motdotla motdotla force-pushed the master branch 4 times, most recently from fa35ecf to 0df4843 Compare May 9, 2021 00:08
@Dunky13
Copy link

Dunky13 commented May 26, 2021

This is awesome! It would really help me out! Do you also need to update the .d.ts file? Or is that done automagically?

@wuntusk
Copy link

wuntusk commented Jun 13, 2021

Would really love to see this in.

@JohnRachid
Copy link

Can we please get this resolved and merged?

@motdotla
Copy link
Owner

I should be getting this merged and released today. Thank you for your incredible patience. 💛

@motdotla motdotla merged commit 8875300 into motdotla:master Jan 18, 2022
@motdotla
Copy link
Owner

motdotla commented Jan 18, 2022

Thank you for this @andreialecu. It's been merged. I will sit on it for a day or two - testing it incrementally by hand. When comfortable then I will release it. Code is very complete but sometimes edge cases sneak in.

Vylpes pushed a commit to Vylpes/Droplet that referenced this pull request Sep 14, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [dotenv](https://github.com/motdotla/dotenv) | dependencies | major | [`^10.0.0` -> `^16.0.0`](https://renovatebot.com/diffs/npm/dotenv/10.0.0/16.0.3) |

---

### Release Notes

<details>
<summary>motdotla/dotenv</summary>

### [`v16.0.3`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1603-httpsgithubcommotdotladotenvcomparev1602v1603-2022-09-29)

[Compare Source](motdotla/dotenv@v16.0.2...v16.0.3)

##### Changed

-   Added library version to debug logs ([#&#8203;682](motdotla/dotenv#682))

### [`v16.0.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1602-httpsgithubcommotdotladotenvcomparev1601v1602-2022-08-30)

[Compare Source](motdotla/dotenv@v16.0.1...v16.0.2)

##### Added

-   Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module

### [`v16.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1601-httpsgithubcommotdotladotenvcomparev1600v1601-2022-05-10)

[Compare Source](motdotla/dotenv@v16.0.0...v16.0.1)

##### Changed

-   Minor README clarifications
-   Development ONLY: updated devDependencies as recommended for development only security risks ([#&#8203;658](motdotla/dotenv#658))

### [`v16.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1600-httpsgithubcommotdotladotenvcomparev1501v1600-2022-02-02)

[Compare Source](motdotla/dotenv@v15.0.1...v16.0.0)

##### Added

-   *Breaking:* Backtick support 🎉 ([#&#8203;615](motdotla/dotenv#615))

If you had values containing the backtick character, please quote those values with either single or double quotes.

### [`v15.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1501-httpsgithubcommotdotladotenvcomparev1500v1501-2022-02-02)

[Compare Source](motdotla/dotenv@v15.0.0...v15.0.1)

##### Changed

-   Properly parse empty single or double quoted values 🐞 ([#&#8203;614](motdotla/dotenv#614))

### [`v15.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1500-httpsgithubcommotdotladotenvcomparev1432v1500-2022-01-31)

[Compare Source](motdotla/dotenv@v14.3.2...v15.0.0)

`v15.0.0` is a major new release with some important breaking changes.

##### Added

-   *Breaking:* Multiline parsing support (just works. no need for the flag.)

##### Changed

-   *Breaking:* `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`).

..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members.

##### Removed

-   *Breaking:* Remove multiline option (just works out of the box now. no need for the flag.)

### [`v14.3.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1432-httpsgithubcommotdotladotenvcomparev1431v1432-2022-01-25)

[Compare Source](motdotla/dotenv@v14.3.1...v14.3.2)

##### Changed

-   Preserve backwards compatibility on values containing `#` 🐞 ([#&#8203;603](motdotla/dotenv#603))

### [`v14.3.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1431-httpsgithubcommotdotladotenvcomparev1430v1431-2022-01-25)

[Compare Source](motdotla/dotenv@v14.3.0...v14.3.1)

##### Changed

-   Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#&#8203;606](motdotla/dotenv#606))

### [`v14.3.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1430-httpsgithubcommotdotladotenvcomparev1420v1430-2022-01-24)

[Compare Source](motdotla/dotenv@v14.2.0...v14.3.0)

##### Added

-   Add `multiline` option 🎉 ([#&#8203;486](motdotla/dotenv#486))

### [`v14.2.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1420-httpsgithubcommotdotladotenvcomparev1411v1420-2022-01-17)

[Compare Source](motdotla/dotenv@v14.1.1...v14.2.0)

##### Added

-   Add `dotenv_config_override` cli option
-   Add `DOTENV_CONFIG_OVERRIDE` command line env option

### [`v14.1.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1411-httpsgithubcommotdotladotenvcomparev1410v1411-2022-01-17)

[Compare Source](motdotla/dotenv@v14.1.0...v14.1.1)

##### Added

-   Add React gotcha to FAQ on README

### [`v14.1.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1410-httpsgithubcommotdotladotenvcomparev1401v1410-2022-01-17)

[Compare Source](motdotla/dotenv@v14.0.1...v14.1.0)

##### Added

-   Add `override` option 🎉 ([#&#8203;595](motdotla/dotenv#595))

### [`v14.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1401-httpsgithubcommotdotladotenvcomparev1400v1401-2022-01-16)

[Compare Source](motdotla/dotenv@v14.0.0...v14.0.1)

##### Added

-   Log error on failure to load `.env` file ([#&#8203;594](motdotla/dotenv#594))

### [`v14.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1400-httpsgithubcommotdotladotenvcomparev1301v1400-2022-01-16)

[Compare Source](motdotla/dotenv@v13.0.1...v14.0.0)

##### Added

-   *Breaking:* Support inline comments for the parser 🎉 ([#&#8203;568](motdotla/dotenv#568))

### [`v13.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1301-httpsgithubcommotdotladotenvcomparev1300v1301-2022-01-16)

[Compare Source](motdotla/dotenv@v13.0.0...v13.0.1)

##### Changed

-   Hide comments and newlines from debug output ([#&#8203;404](motdotla/dotenv#404))

### [`v13.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1300-httpsgithubcommotdotladotenvcomparev1204v1300-2022-01-16)

[Compare Source](motdotla/dotenv@v12.0.4...v13.0.0)

##### Added

-   *Breaking:* Add type file for `config.js` ([#&#8203;539](motdotla/dotenv#539))

### [`v12.0.4`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1204-httpsgithubcommotdotladotenvcomparev1203v1204-2022-01-16)

[Compare Source](motdotla/dotenv@v12.0.3...v12.0.4)

##### Changed

-   README updates
-   Minor order adjustment to package json format

### [`v12.0.3`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1203-httpsgithubcommotdotladotenvcomparev1202v1203-2022-01-15)

[Compare Source](motdotla/dotenv@v12.0.2...v12.0.3)

##### Changed

-   Simplified jsdoc for consistency across editors

### [`v12.0.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1202-httpsgithubcommotdotladotenvcomparev1201v1202-2022-01-15)

[Compare Source](motdotla/dotenv@v12.0.1...v12.0.2)

##### Changed

-   Improve embedded jsdoc type documentation

### [`v12.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1201-httpsgithubcommotdotladotenvcomparev1200v1201-2022-01-15)

[Compare Source](motdotla/dotenv@v12.0.0...v12.0.1)

##### Changed

-   README updates and clarifications

### [`v12.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1200-httpsgithubcommotdotladotenvcomparev1100v1200-2022-01-15)

[Compare Source](motdotla/dotenv@v11.0.0...v12.0.0)

##### Removed

-   *Breaking:* drop support for Flow static type checker ([#&#8203;584](motdotla/dotenv#584))

##### Changed

-   Move types/index.d.ts to lib/main.d.ts ([#&#8203;585](motdotla/dotenv#585))
-   Typescript cleanup ([#&#8203;587](motdotla/dotenv#587))
-   Explicit typescript inclusion in package.json ([#&#8203;566](motdotla/dotenv#566))

### [`v11.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#&#8203;1100-httpsgithubcommotdotladotenvcomparev1000v1100-2022-01-11)

[Compare Source](motdotla/dotenv@v10.0.0...v11.0.0)

##### Changed

-   *Breaking:* drop support for Node v10 ([#&#8203;558](motdotla/dotenv#558))
-   Patch debug option ([#&#8203;550](motdotla/dotenv#550))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC43NC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNzQuMiJ9-->

Co-authored-by: Renovate Bot <renovate@vylpes.com>
Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/Droplet/pulls/105
Reviewed-by: Vylpes <ethan@vylpes.com>
Co-authored-by: RenovateBot <renovate@vylpes.com>
Co-committed-by: RenovateBot <renovate@vylpes.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feature: Support multi-line secrets
7 participants